Complex Options

Exotic Options

Exotic Options

This is where we get to be a little more creative with our programming. We will go back to our basic Monte Carlo routine so as to keep the coding as simple as possible.

The things you will need to consider when programming exotic options are:

There is ultimately no limit to the amount of different options you could consider, but we will look at a few key ones here. The point is once you can program then you can change your code to reflect any particular option you want.

Single Barrier Options

A single barrier option is typically an option which pays out zero unless it has reached a certain level. Once it has reached that level then it acts as a normal option.

You can have options which are up-and-in, up-and-out, down-and-in and down-and-out.

For example if we turned our standard option into a down and out option with a knock-out point of £90 then it would behave just like any other call option unless the price of the underlying share went below £90, at any point, at which point the option would become worthless.

So you need an extra variable say knocked_out as boolean.

Initially you set this to false:

  knocked_out = false

Then you will need to work out where to add the lines:

  if S < 90 then 
    knockout_out = true
   end if

What would be wrong with

  if S < 90 then 
    knockout_out = true
   else
    knocked_out = false
   end if

It would effectively knock back in again when the share price rose above 90

What else will you need to change

At the end you will need

  if knocked_out then
    payoff = 0
   else
    payoff = max(S - K, 0)   'or whatever the payoff is
   end if

The other types of option follow by analogy.

Digital Options

Whereas for a standard call option the payoff would be $Max(S_n - K, 0)$, for a digital option the payoff could be $I(S_n > K)$, that is the payoff is £1 if the share price is above the strike price and nothing otherwise.

The code for this would need to be something like:

  if S > K then
    payoff = 1    'or whatever payoff is
   else
    payoff = 0
   end if

You could also write an actual indicator function, but this would probably be overkill

function indicator(condition as boolean) as double
  if condition then
    indicator = 1
   else
    indicator = 0
   end if
 end function

Notice here how we have used the boolean variable - this can only take values true or false

We can also set the return value of the function in the middle of the function if we wish as is shown above

You CANNOT use the return value as an interim variable though as the function will think this is a further function call

Lookback Options

Lookback option can come in many forms, but the classic variety is for example an option where instead of the payout being $Max(S_n - K, 0)$ it might be $Max\left(\displaystyle Max_{0 \leq i\leq n}(S_i) - K, 0\right)$, so you have to "look back" over the price evolution of the share to calculate the payoff of the option.

To include lookback options you will need an extra variable which 'carries' the look back amount

For example the line:

  if S > max_S then max_S = S

will use the variable max_S to store the running maximum value of the share price

What else do you need to do

Make sure max_S is reset to 0 for the start of each run

Make sure you use max_S and not S in your payoff function at the end

Adapt your Monte Carlo model code so that it can handle Barrier options, digital options and look-back options. You need to use the function: Monte_Carlo_LogNormal

American Options
Introduction

American Options

American Options cannot be simply priced by Monte Carlo methods

Why do you think this is the case

It follows from the fact that the valuation of American options using binomial tress requires us to work backwards through the tree given that at each point in time we need to decide whether or not to exercise given the relative values of the 'intrinsic' and 'carry-on' values

It may help to review the Binomial tree method for American option pricing

CRR method (tree)

CRR Binomial Tree for American Option Pricing

American Options allow the holder to exercise at any time up to and including maturity.

When you do a CRR tree you need to adapt your code so that at each node you calculate two different values:

  • The value of the option assuming you do not exercise: the discounted expectation under Q
  • The value of the option assuming you do exercise: simply $Max(0,S_t-K)$ for a call option

Check out the code in this spreadsheet: Binomial Model to see how American Options are handled

Remember how we worked out the payoff at the end and then for each node decide if we would have exercised at that point given the follow-on value

Clearly there is little point in being able to price American call options (on non-dividend paying shares) as they have the same price as the European Call option. We will largely just consider Put options from now on

Monte Carlo Methods

Available Methods

There are some methods available for approximating American option prices using Monte Carlo methods.

A comprehensive paper by Caflish and Chaudary of UCLA is presented here for further reading.

I have given a simple but slow method and a surprisingly fast but more difficult method below

Critical Decision Method
The Critical Decision Method

The critical decision method is based on the idea that (for simple call and put options) we can divide the decision space into (for put options):

  • All share prices above $Y_t$ would involve not exercising
  • All share prices below $Y_t$ would involve exercising

and visa versa for call options

where we need to work out what the threshold values $Y_t$ are, for each $t$ for which we are allowed to make a decision

Method
  • Working backwards from the term $T$ of the option, start with the last time $t_{n-1}$ at which we could make a decision to exercise
  • Calculate the value of the option assuming we do not exercise before $t_{n-1}$ and then do exercise at $t_{n-1}$ if the share price is below $Y_{t_{n-1}}$
  • Repeat this exercise with multiple values of $Y_{t_{n-1}}$ until we find the value such that the value of the put option is a maximum
  • This is then the threshold we will actually use
  • Repeat whole process at time $Y_{t_{n-2}}$ and so on until we have a set of thresholds $Y_{t_{i}}$ for $i=1..n-1$
  • The value of the American Put option is the value of the option with deterministic 'exercise decision' at each point $t_{i}$ based on the value of $Y_{t_{i}}$

A Spreadsheet can be found here. It includes a very simple evolutionary search method

Advantages

Ultimately can be used to produce arbitrarily accurate results

Disadvantages

Extremely slow

Only uses discrete decision points, which although there can be arbitrarily many of them will make an already slow method even slower

Improvements

Using the same set of random numbers for each threshold $Y_{t_{i}}$ will make comparison converge quicker

Efficient selection of $Y_{t_{i}}$ will allow optimum to be found more quickly

Longstaff Schwartz Method
Longstaff Schwartz Method

This method which can also be called the least squares method, can only ultimately produce an approximation but is much faster and has been tested to produce remarkably accurate results

The essence is to fit a quadratic (or some other appropriate function) to the follow-on values as you go backwards through the set of all the Monte Carlo runs

Method is as follows
  • Generate $N$ price paths of the stock
  • At time $T = t_n$ it is axiomatic that you exercise the put option if the share price is less than the strike price
  • So we have a full payoff profile at time $t_n$
  • At time $t_{n-1}$ we have a decision to make:
  • We know the intrinsic value is $max(K-S_{t_{n-1}}, 0)$ but we do not know the follow-on value
  • However we do know the follow-on value in the particular run of the model we are looking at
  • We also know the follow-on value for all the other runs and also what the share price was at time: $t_{n-1}$ for each of these runs
  • So if we fit a function: follow-on value = f(current share price) to the data for each run of current share price and follow-on value then we can use this function to estimate our follow-on value for each run at time $t_{n-1}$
  • We now have (for each run) an intrinsic value and a follow-on value at time $t_{n-1}$ and so we can decide which is the greatest of the two and this becomes our payoff at time $t_{n-1}$
  • We then go back to $t_{n-2}$ and repeat the whole exercise

A common function for $f$ is $f(a + b \times X + c \times X^2) = Y$ where $X$ is the vector of share prices at time $t_{i}$ and $Y$ is the payoffs discounted back to $t_{i}$ from $t_{i+1}$

The slide show below illustrates the method